package com.xframe.xdal.core.handler.valueTake;

import com.xframe.xdal.core.util.XReflect;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * 功能描述：ResultSet结果转成枚举类型
 * 创建人：xufeng
 * 创建时间：2022/11/4 18:36
 *
 * @version 1.0
 **/
public class EnumValueTakingStrategy implements IValueTakingStrategy{

    private Class dataType;
   // private Method method;

    public EnumValueTakingStrategy(Class dataType){
        this.dataType = dataType;
        //this.method = XReflect.getMethodByName(this.dataType,"convertTo");

    }


    @Override
    public Object getValue(ResultSet resultSet, int colIndex) {
        try {
            Object rsVal = resultSet.getObject(colIndex);
//            if(this.method != null){
//
//                try {
//                    return this.method.invoke(rsVal);
//                } catch (Exception e) {
//                    e.printStackTrace();
//                    return null;
//                }
//            }
            if(rsVal == null){
                return null;
            }
            return Enum.valueOf(dataType, rsVal.toString().toUpperCase());
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }
}
